概述
在Android O以后的版本中,多任务(QuickStep)的逻辑都放在了Launcher中,代码放在 quickstep 目录中。
启动多任务,一般是通过底部导航栏或者手势来启动,它们的发起者都是 SystemUI,SystemUI(OverviewProxyService) 和 Launcher
(TouchInteractionService)通过进程间通信来启动多任务。
在Launcher中,LauncherRecentsView 是用来承载 TaskView 用来显示多任务的。
导航栏启动流程
SystemUI
1 | ├── NavigationBarFragment.onRecentsClick |
Launcher
TouchInteractionService 收到指令后显示 LauncherRecentsView 并启动 Launcher。
1 | TouchInteractionService.onOverviewToggle |
registerAndStartActivity 可能会启动不同的activity,可能是 Launcher,也可能时 fallback 的 RecentActivity。Intent 在 OverviewComponentObserver.updateOverviewTargets() 方法中设置。
1 | OverviewComponentObserver.getOverviewIntent |
多任务显示:
1 | Launcher.onNewIntent |